When a user opts to view multimedia web content in an internet browser, at least some of that web content may be of high quality (e.g., high quality images, video, audio, etc.) and might be quite large in size. The retrieval, serving, and rendering of such web content will have varying response time differences depending on many factors related to the user's device (i.e., client device), the server device, and the network connecting the two devices. For example, when a user of Google™ Inc.'s Street View application opts to view a Street View image, the client device (e.g., a computing device such as a computer, laptop, handheld device, mobile telephone, etc.) fetches from a server device image tiles needed to render the image for display at the client device. The image tiles stored at the server are high quality images that are very large in size. For fast client devices, there would be little to no response time issues. However, for a client device considered slow (due to various factors such as poor network speed and/or network latency, distance to/from server, rendering latency of the client device, etc.), it could take a considerable amount of time (e.g., minutes) to fetch and render such an image.
Conventional ways of dealing with the variation in client- and network-related latency include targeting web content for an ‘average’ user or for a ‘worst case’ user. For example, tile images may be heavily compressed to reduce their respective sizes and improve response time. This may require storing web content at the server at predefined compression levels and sizes that are then served to all users, fast or slow. These techniques do not take into account the various differences in each user's device and connection setup. Thus, this practice penalizes fast client devices as the fine details of an image may be lost.
Systems and methods are needed that optimize the retrieval, serving, and rendering of web content for the many variations of client devices and their network connections.